package org.agent.aigccore.dao.mappers.mysql;

import org.agent.aigccore.model.po.IotDevicePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface IotDeviceMapper {

    /**
     * 根据 ID 查询IoT设备
     *
     * @param id IoT设备 ID
     * @return IoT设备实体
     */
    IotDevicePO load(@Param("id") Long id);

    /**
     * 根据 ID 查询IoT设备（加锁）
     *
     * @param id IoT设备 ID
     * @return IoT设备实体
     */
    IotDevicePO lock(@Param("id") Long id);

    /**
     * 分页查询IoT设备
     *
     * @param deviceStatus 设备状态
     * @param workStatus   工作状态
     * @param offset       偏移量
     * @param pageSize     页面大小
     * @return IoT设备列表
     */
    List<IotDevicePO> page(@Param("deviceStatus") String deviceStatus, @Param("workStatus") String workStatus, @Param("offset") int offset, @Param("pageSize") int pageSize);

    /**
     * 根据设备名称查询IoT设备
     *
     * @param deviceName 设备名称
     * @return IoT设备列表
     */
    List<IotDevicePO> queryByName(@Param("deviceName") String deviceName);

    /**
     * 根据设备IP查询IoT设备
     *
     * @param deviceIp 设备IP
     * @return IoT设备列表
     */
    List<IotDevicePO> queryByIp(@Param("deviceIp") String deviceIp);

    /**
     * 新增IoT设备
     *
     * @param iotDevicePO IoT设备实体
     * @return 插入记录数
     */
    int insert(IotDevicePO iotDevicePO);

    /**
     * 更新IoT设备
     *
     * @param iotDevicePO IoT设备实体
     * @return 更新记录数
     */
    int update(IotDevicePO iotDevicePO);

    /**
     * 删除IoT设备
     *
     * @param id IoT设备ID
     * @return 删除记录数
     */
    int delete(@Param("id") Long id);
}